home *** CD-ROM | disk | FTP | other *** search
/ bioinformatics.org / bioinformatics.org_software.tar / www.bioinformatics.org / download / ecell2 / ecell220setup.exe / {app} / standard / SRCJ / Reactor.java < prev    next >
Text File  |  2002-05-09  |  14KB  |  456 lines

  1. /**
  2.  * title:     Reactor class (Reactor.java)<p>
  3.  * description : Reactor window class<p>
  4.  * Copyright (C) 1996-2001 Keio University <p>
  5.  * Copyright (C) 1998-2001 Japan Science and Technology Corporation (JST)<p>
  6.  *               GNU General Public Licence <p>
  7.  * Division:     Mitsui Knowledge Industry Co. Ltd. Bioscience division <p>
  8.  * Version :     $Id: Reactor.java,v 1.3 2002/01/24 05:57:12 shiozawa Exp $ <p>
  9.  */
  10.  
  11.  
  12. package ecell;
  13.  
  14. import java.awt.*;
  15. import java.awt.event.*;
  16. import javax.swing.border.*;
  17. import javax.swing.*;
  18. import javax.swing.plaf.basic.*;
  19. import java.lang.*;
  20. import java.util.StringTokenizer;
  21. import java.util.Vector;
  22.  
  23. /**
  24.  * Reactor window class
  25.  * @author      XD.Zheng
  26.  * @version     1.0
  27.  * @since       JDK1.2.2
  28.  */
  29. /*
  30. public class Reactor extends JFrame implements ActionListener, AccessListener{
  31. */
  32. public class Reactor extends ECell2Interface
  33. {
  34.     JPanel jp1 = new JPanel();
  35.     JPanel jp2 = new JPanel();
  36.     JPanel jp3 = new JPanel();
  37.  
  38.     JPanel jp11 = new JPanel();
  39.     JPanel jp12 = new JPanel();
  40.  
  41.     JPanel jp121 = new JPanel();
  42.     JPanel jp122 = new JPanel();
  43.     JPanel jp123 = new JPanel();
  44.     JPanel jp13 = new JPanel();
  45.  
  46.     JPanel jp31 = new JPanel();
  47.     JPanel jp32 = new JPanel();
  48.     JPanel jp33 = new JPanel();
  49.     JPanel jp34 = new JPanel();
  50.  
  51.     JLabel label1 = new JLabel("Class name:    ");
  52.     JLabel label2 = new JLabel("Michaelis UniUniReversibleReactor");
  53.     JLabel label3 = new JLabel("Entry name:    ");
  54.     JLabel label4 = new JLabel();
  55.  
  56.     JLabel label5 = new JLabel("Name         :   ");
  57.     JLabel label6 = new JLabel();
  58.     JLabel label7 = new JLabel("Activity        :");
  59.     JLabel label8 = new JLabel("                           1693.86    ");
  60.  
  61.  
  62.     JButton buttonSwitch = new JButton("Show lists");
  63.     JButton buttonClose = new JButton("Close");
  64.  
  65.     JLabel labelTitle1 = new JLabel("Parameter");
  66.     JLabel labelTitle2 = new JLabel("Substrate");
  67.     JLabel labelTitle3 = new JLabel("Product");
  68.     JLabel labelTitle4 = new JLabel("Catalyst");
  69.     JLabel labelTitle5 = new JLabel("Effector");
  70.  
  71.     DefaultListModel model1 = new DefaultListModel();
  72.     DefaultListModel model2 = new DefaultListModel();
  73.     DefaultListModel model3 = new DefaultListModel();
  74.     DefaultListModel model4 = new DefaultListModel();
  75.     DefaultListModel model5 = new DefaultListModel();
  76.  
  77.     JList list1 = new JList(model1);
  78.     JList list2 = new JList(model2);
  79.     JList list3 = new JList(model3);
  80.     JList list4 = new JList(model4);
  81.     JList list5 = new JList(model5);
  82.  
  83.     JScrollPane jScrollPane1;
  84.     JScrollPane jScrollPane2;
  85.     JScrollPane jScrollPane3;
  86.     JScrollPane jScrollPane4;
  87.     JScrollPane jScrollPane5;
  88.  
  89.     Border border1;
  90.  
  91.     /**
  92.      * Reactor window number
  93.      */
  94.     int rctCode =-1;
  95.  
  96.     /**
  97.      *EntryName
  98.      */
  99.     String entryName ="";
  100.  
  101.     /**
  102.      *Name
  103.      */
  104.     String name = "";
  105.  
  106.     /**
  107.      *ClassName;
  108.      */
  109.     String className;
  110.  
  111.     /**
  112.      *CtrollorPanel
  113.      */
  114.     //MainWindow window;
  115.  
  116.     /**
  117.      *Timer
  118.      */
  119.     //Timer timer = new Timer(200,this);
  120.  
  121.  
  122.     /*
  123.      * Constructor
  124.      * @param code          Substance number
  125.      * @param entryName     entryName
  126.      * @param name          Name
  127.      * @param className     className
  128.      * @param window        CtrollorPanel
  129.      */
  130.     public Reactor(int code ,String entryName,String name,String className, MainWindow window) {
  131.  
  132.         // 2002.4 akira shiozawa
  133.         super( window );
  134.  
  135.         enableEvents(AWTEvent.WINDOW_EVENT_MASK);
  136.         this.entryName= entryName;
  137.         this.name = name;
  138.         this.window = window;
  139.         this.rctCode = code;
  140.         this.className=className;
  141.  
  142.         jbInit();
  143.         setLists();
  144.         // 2002.4 akira shiozawa
  145.         window.addAccessListener( this );
  146.         //timer.start();
  147.     }
  148.  
  149.     /**
  150.      * Initialization
  151.      * @return void
  152.      */
  153.     public void jbInit(){
  154.         this.setResizable(true);
  155.         border1 = BorderFactory.createEmptyBorder();
  156.         //this.setSize(new Dimension(345, 180));
  157.         this.setSizeAndLocation(new Dimension(345, 180), new Point(150, 100));
  158.         //this.setTitle(entryName );
  159.         this.setTitle( "Reactor: " + entryName );
  160.         label2.setText(className);
  161.         label4.setText(entryName);
  162.         label6.setText(name);
  163.         buttonClose.addActionListener(this);
  164.         buttonSwitch.addActionListener(this);
  165.         jp11.setLayout(new FlowLayout(0,3,0));
  166.         label8.setFont(new java.awt.Font("SansSerif", 0, 12));
  167.         label8.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED,Color.white,Color.white,new Color(142, 142, 142),new Color(99, 99, 99)));
  168.         jp12.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED,Color.white,Color.white,new Color(142, 142, 142),new Color(99, 99, 99)));
  169.         jp12.setPreferredSize(new Dimension(338, 55));
  170.         jp13.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED,Color.white,Color.white,new Color(142, 142, 142),new Color(99, 99, 99)));
  171.         label1.setFont(new java.awt.Font("Serif", 1, 12));
  172.         label3.setFont(new java.awt.Font("Serif", 1, 12));
  173.         label5.setFont(new java.awt.Font("Serif", 1, 12));
  174.         jp11.setMinimumSize(new Dimension(330, 150));
  175.         jp2.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED,Color.white,Color.white,new Color(142, 142, 142),new Color(99, 99, 99)));
  176.         list1.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED,Color.white,Color.white,new Color(178, 178, 178),new Color(124, 124, 124)));
  177.  
  178.         jp3.setBorder(BorderFactory.createBevelBorder(BevelBorder.RAISED,Color.white,Color.white,new Color(142, 142, 142),new Color(99, 99, 99)));
  179.  
  180.         list2.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED,Color.white,Color.white,new Color(178, 178, 178),new Color(124, 124, 124)));
  181.         list3.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED,Color.white,Color.white,new Color(178, 178, 178),new Color(124, 124, 124)));
  182.         list4.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED,Color.white,Color.white,new Color(178, 178, 178),new Color(124, 124, 124)));
  183.         list5.setBorder(BorderFactory.createBevelBorder(BevelBorder.LOWERED,Color.white,Color.white,new Color(178, 178, 178),new Color(124, 124, 124)));
  184.         jp1.setPreferredSize(new Dimension(338, 177));
  185.         jp11.add(buttonSwitch);
  186.         jp11.add(buttonClose);
  187.  
  188.         jp121.setLayout(new FlowLayout(0,5,0));
  189.         jp121.add(label1);
  190.         jp121.add(label2);
  191.  
  192.         jp122.setLayout(new FlowLayout(0,5,0));
  193.         jp122.add(label3);
  194.         jp122.add(label4);
  195.  
  196.         jp123.setLayout(new FlowLayout(0,5,0));
  197.         jp123.add(label5);
  198.         jp123.add(label6);
  199.  
  200.         jp13.setLayout(new FlowLayout(0,5,10));
  201.         jp13.add(label7);
  202.         jp13.add(label8);
  203.         label8.setPreferredSize(new Dimension(150,30));
  204.         jp12.setLayout(new GridLayout(3,1,0,0));
  205.         jp12.add(jp121);
  206.         jp12.add(jp122);
  207.         jp12.add(jp123);
  208.  
  209.         jp1.setLayout(new BorderLayout());
  210.         jp1.add(jp11,"North");
  211.         jp1.add(jp12,"Center");
  212.         jp1.add(jp13,"South");
  213.         this.getContentPane().add(jp1,"West");
  214.         jp2.setLayout(new BorderLayout());
  215.         jp2.add(labelTitle1,"North");
  216.         jScrollPane1= new JScrollPane(list1);
  217.         jScrollPane1.setPreferredSize(new Dimension(150,157));
  218.         jp2.add(jScrollPane1,"Center");
  219.  
  220.         jp31.setLayout(new BorderLayout());
  221.         jp31.add(labelTitle2,"North");
  222.         jScrollPane2= new JScrollPane(list2);
  223.         jScrollPane2.setPreferredSize(new Dimension(110, 107));
  224.         jp31.add(jScrollPane2,"Center");
  225.  
  226.         jp32.setLayout(new BorderLayout());
  227.         jp32.add(labelTitle3,"North");
  228.         jScrollPane3= new JScrollPane(list3);
  229.         jScrollPane3.setPreferredSize(new Dimension(110, 107));
  230.         jp32.add(jScrollPane3,"Center");
  231.  
  232.         jp33.setLayout(new BorderLayout());
  233.         jp33.add(labelTitle4,"North");
  234.         jScrollPane4= new JScrollPane(list4);
  235.         jScrollPane4.setPreferredSize(new Dimension(110, 107));
  236.         jp33.add(jScrollPane4,"Center");
  237.  
  238.  
  239.         jp34.setLayout(new BorderLayout());
  240.         jp34.add(labelTitle5,"North");
  241.         jScrollPane5= new JScrollPane(list5);
  242.         jScrollPane5.setPreferredSize(new Dimension(110, 107));
  243.         jp34.add(jScrollPane5,"Center");
  244.  
  245.         jp3.setLayout(new GridLayout(1,4,5,0));
  246.         jp3.add(jp31);
  247.         jp3.add(jp32);
  248.         jp3.add(jp33);
  249.         jp3.add(jp34);
  250.  
  251.     }
  252.  
  253.     /**
  254.      * Make the ListModel.
  255.      * @return void
  256.      */
  257.     private void setLists(){
  258.         String test="";
  259.         try{
  260.             String[] lists = window.df.getReactorSpce(rctCode);
  261.             for(int i=0;i<4;i++){
  262.                 StringTokenizer st = new StringTokenizer(lists[i],"\n");
  263.                   while (st.hasMoreTokens()) {
  264.                     test=st.nextToken();
  265.                     
  266.                     switch(i){
  267.  
  268.                         case 0:
  269.                             model2.addElement(test);
  270.                             break;
  271.                         case 1:
  272.                             model3.addElement(test);
  273.                             break;
  274.                         case 2:
  275.                             model4.addElement(test);
  276.                             break;
  277.                         case 3:
  278.                             model5.addElement(test);
  279.                             break;
  280.                     }
  281.                 }
  282.             }
  283.         }catch(Exception ex){
  284.             window.messageWindow.setErrorMessage( ex );
  285.         }
  286.         String[] paramNames=null;
  287.         try{
  288.             paramNames=window.df.getReactorParamName(rctCode);
  289.         }catch(Exception ex){
  290.             window.messageWindow.setErrorMessage( ex );
  291.         }
  292.         int nameNum= paramNames.length;
  293.         if(nameNum!=0){
  294.             double[] paramValues = new double[nameNum];
  295.             try{
  296.                 window.df.getReactorParamValue(rctCode,paramValues);
  297.             }catch(Exception ex){
  298.                 window.messageWindow.setErrorMessage( ex );
  299.             }
  300.             for(int i=0;i<nameNum;i++){
  301.                 model1.addElement(paramNames[i] + "  :  " + paramValues[i]);
  302.             }
  303.         }
  304.     }
  305.  
  306.     public void accessJni( MainWindow win )
  307.     {
  308.         setRunningFlag( true );
  309.         this.getReactorData();
  310.         setRunningFlag( false );
  311.     }
  312.  
  313.     private void getReactorData()
  314.     {
  315.         if(rctCode>=0)
  316.         {
  317.             int count = window.count;
  318.             try
  319.             {
  320.                 double value = window.df.getReactorData( count, rctCode );
  321.                 label8.setText("                  "+ getDoubleValue( value ) );
  322.             }
  323.             catch(Exception ex)
  324.             {
  325.                 window.messageWindow.setErrorMessage( ex );
  326.             }
  327.         }
  328.     }
  329.  
  330.     /**
  331.      * Processing of ActionListener event 
  332.      * @param e      ActionEvent
  333.      * @return  void
  334.      */
  335.     public void actionPerformed(ActionEvent e) {
  336.         if(e.getSource()== buttonClose){
  337.              exit_actionPerformed();
  338.         
  339.         }
  340. /**
  341.         else if(e.getSource()==timer){
  342.             if(rctCode>=0){
  343.                 int count = window.count;
  344.                 try{
  345.                     label8.setText("                  "+ getDoubleValue(window.df.getReactorData(count,rctCode)));
  346.                 }catch(Exception ex){
  347.                     ex.printStackTrace();
  348.                 }
  349.             }
  350.         }
  351. **/
  352.         else if(e.getSource()== buttonSwitch){
  353.  
  354.             if (buttonSwitch.getText().equals("Show lists")){
  355.                 this.setSize(new Dimension(500,300));
  356.                 this.getContentPane().add(jp2,"East");
  357.                 this.getContentPane().add(jp3,"South");
  358.  
  359.                 repaint();
  360.                 this.pack();
  361.                 buttonSwitch.setText("Hide lists");
  362.             }else if(buttonSwitch.getText().equals("Hide lists")){
  363.                 this.setSize(new Dimension(345,180));
  364.                 this.getContentPane().remove(jp2);
  365.                 this.getContentPane().remove(jp3);
  366.  
  367.                 repaint();
  368.                 this.pack();
  369.  
  370.                 buttonSwitch.setText("Show lists");
  371.             }
  372.         }
  373.     }
  374.  
  375.     /**
  376.      * Override to exit when the window is closed.
  377.      * @param e     WindowEvent
  378.      * @return void
  379.      */
  380. /*
  381.     protected void processWindowEvent(WindowEvent e) {
  382.         super.processWindowEvent(e);
  383.         if (e.getID() == WindowEvent.WINDOW_CLOSING) {
  384.             exit_actionPerformed();
  385.         }
  386.     }
  387. */
  388.  
  389.     /**
  390.      * Exit
  391.      * @return void
  392.      */
  393.     public void exit_actionPerformed(){
  394.         
  395.         //timer.stop();
  396.         // 2002.4. akira shiozawa
  397.         window.removeAccessListener( this );
  398.  
  399.         try{
  400.             window.df.setReactorState(rctCode,-1);
  401.         }catch(Exception ex){
  402.             window.messageWindow.setErrorMessage( ex );
  403.         }
  404.  
  405.         this.setVisible(false);
  406.         
  407. /**
  408.         Vector vr = window.vReactor;
  409.         for(int i=0;i<vr.size();i++){
  410.             if(this==vr.elementAt(i)){
  411.                 vr.remove(i);
  412.                 //this.dispose();
  413.             }
  414.         }
  415. **/
  416.  
  417.         this.dispose();
  418.     }
  419.  
  420.      /**
  421.      * Convert Double value to suitable String one.
  422.      * @param vaule     Double data
  423.      * @return     Converted String
  424.      */
  425.     public String getDoubleValue(double value){
  426.         int dotIndex=-1;
  427.         int eIndex=-1;
  428.  
  429.         String str=String.valueOf(value);
  430.         int len=str.length();
  431.         if(len<=8) return str;
  432.  
  433.  
  434.         dotIndex=str.indexOf(".");
  435.         eIndex=str.indexOf("E");
  436.         if(eIndex==-1){
  437.             if(dotIndex==-1){
  438.                 return str;
  439.             }else if(dotIndex==7){
  440.                 return str.substring(0,9);
  441.             }else if(dotIndex<7){
  442.                 return str.substring(0,8);
  443.             }else if(dotIndex>7){
  444.                 return str.substring(0,dotIndex);
  445.             }
  446.         }else if(eIndex<=7){
  447.             return str;
  448.         }else{
  449.             return (str.substring(0,7)+str.substring(eIndex,len)); 
  450.         }
  451.         return "";
  452.  
  453.     }
  454.  
  455. }
  456.